/* 文章分类路由处理函数模块 */

// 导入数据库操作模块
const db = require('../db/index')

// 向外暴露获取文章分类路由对应处理函数
exports.getCates = (req, res) => {
    // 定义查询所有文章的SQL语句
    const select_cates = 'select * from blog_article_cate where is_delete=0 order by id asc'
    // 执行SQL语句
    db.query(select_cates, (err, result) => {
        // sql执行错误
        if (err) return res.cc(err.message)
        // 当前页
        let curpage = parseInt(req.query.curpage)
        // 一页显示的条数
        let pagesize = parseInt(req.query.pagesize) // 前段不传的话就用这个默认的
        // 总页码
        let sumpage = Math.ceil(result.length/pagesize)
        // 总条数
        let total = result.length
        if (curpage == '') {
          let data = result.splice(0, pagesize)
          return res.send({
            sumpage,
            total,
            status: 0,
            msg: '获取成功',
            data
          })
        } else {
          let data = result.splice((curpage - 1) * 5, pagesize)
          return res.send({
            sumpage,
            total,
            status: 0,
            msg: '获取成功',
            data
          })
        }
    })
}

// 向外暴露新增文章分类路由对应处理函数
exports.addCate = (req, res) => {
    // 定义查重SQL语句
    const select_name_alias = 'select * from blog_article_cate where name=? or alias=?'
    // 执行SQL语句
    db.query(select_name_alias, [req.body.name, req.body.alias], (err, result) => {
        console.log(req.body)
        // SQL 执行错误
        if (err) return res.cc(err.message)
        // 判断分类名称和别名是否已存在
        if (result.length === 2) return res.cc('分类名称和别名已存在!')
        // 判断分类名称是否已存在
        if (result.length === 1 && result[0].name === req.body.name) return res.cc('分类名称已存在！')
        // 判断分类别名是否已存在
        if (result.length === 1 && result[0].alias === req.body.alias) return res.cc('分类别名已存在！')
        // 定义新增分类名称和分类别名的SQL语句
        const insert_name_alias = 'insert into blog_article_cate set ?'
        // 执行SQL语句
        db.query(insert_name_alias, req.body, (err, result) => {
            // SQL执行错误
            if (err) res.cc(err.message)
            // 插入失败
            if (result.affectedRows !== 1) return res.cc('添加分类失败！')
            // 插入成功
            res.cc('添加成功！', 0)
        })
    })
}

// 向外暴露删除文章分类路由对应处理函数
exports.deleteCate = (req, res) => {
    // 定义删除分类的SQL语句
    const update_is_delete = 'update blog_article_cate set is_delete=1 where id=?'
    // 执行SQL语句
    db.query(update_is_delete, req.params.id, (err, result) => {
        // SQL执行错误
        if (err) return res.cc(err.message)
        // 影响行数不为1
        if (result.affectedRows !== 1) return res.cc('删除分类失败!')
        // 删除成功
        res.cc('删除成功!', 0)
    })
}

// 向外暴露获取文章分类详情路由对应处理函数
exports.getCate = (req, res) => {
    // 定义查询语句
    const select_cate = 'select * from blog_article_cate where id=?'
    // 执行SQL语句
    db.query(select_cate, req.params.id, (err, result) => {
        // SQL执行错误
        if (err) return res.cc(err.message)
        // 没有查询到
        if (result.length < 1) return res.cc('获取失败！')
        // 获取成功
        res.send({
            status: 1,
            data: result[0],
            msg: '获取成功!'
        })
    })
}